import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建 axios 实例
const api = axios.create({
    baseURL: process.env.NODE_ENV === 'production'
        ? '/api'
        : '/api',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json'
    }
})

// 请求拦截器
api.interceptors.request.use(
    config => {
        // 可以在这里添加认证 token
        const token = localStorage.getItem('authToken')
        if (token) {
            config.headers.Authorization = `Bearer ${token}`
        }
        return config
    },
    error => {
        console.error('请求错误:', error)
        return Promise.reject(error)
    }
)

// 响应拦截器
api.interceptors.response.use(
    response => {
        return response.data
    },
    error => {
        console.error('响应错误:', error)

        let message = '网络错误，请稍后重试'
        if (error.response) {
            switch (error.response.status) {
                case 400:
                    message = '请求参数错误'
                    break
                case 401:
                    message = '未授权，请重新登录'
                    // 可以在这里跳转到登录页
                    break
                case 403:
                    message = '拒绝访问'
                    break
                case 404:
                    message = '请求的资源不存在'
                    break
                case 500:
                    message = '服务器内部错误'
                    break
                default:
                    message = `请求失败: ${error.response.status}`
            }
        } else if (error.request) {
            message = '网络连接失败，请检查网络设置'
        }

        ElMessage.error(message)
        return Promise.reject(error)
    }
)

// API 方法
export const getNotes = () => {
    return api.get('/notes/getAll')
}

export const getNoteById = (id) => {
    return api.get(`/notes/${id}`)
}

export const addNote = (data) => {
    return api.post('/notes/addOrUpdate', data)
}

export const deleteNote = (id) => {
    return api.delete(`/notes/${id}`)
}

export const checkTodayReviews = () => {
    return api.get('/notes/today-reviews')
}

export const manualTrigger = () => {
    return api.get('/notes/manual-trigger')
}

// 修复标记复习完成接口
export const completeReview = (noteId, data) => {
    return api.patch(`/notes/${noteId}/complete-review`, data)
}

export default api